package practica3;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

import weka.core.Instances;


/**Clase que carga los datos*/
public class LoadDataFile {
	
	public LoadDataFile() {}
	
	/**
	 * Metodo que carga las instancias
	 * @param pPath ruta del archivo 
	 * @return las instancias
	 * @throws Exception
	 */
	public Instances loadInstances(String pPath) throws Exception{
				
		// 1.2. Abrir el fichero
		FileReader fr = null;
		try {
			fr = new FileReader(pPath);
		} catch (FileNotFoundException e) {
			System.out.println("ERROR: Revisar path del fichero de datos:"+ pPath);
		}
		
		// 1.3. Cargar las instancias
		Instances data = null;
		try {
			data = new Instances(fr);
		} catch (IOException e) {
			System.out.println("ERROR: Revisar contenido del fichero de datos: "+ pPath);
		}
		
		// 1.4. Cerrar el fichero
		try {
			fr.close();
		} catch (IOException e) {
			System.out.println("ERROR: no se pudo cerrar el archivo");
		}
		
		// 1.5. Especificar que atributo sera la clase: en este caso, el ultimo. 
		data.setClassIndex(data.numAttributes()-1);		
		
		return data;
	}
	
	/** Metodo que imprime el error encontrado al recibir los datos.*/
	public void incorrectParams(){

		System.out.println("OBJETIVO: Realizar un barrido de parametros aplicando OneR y BayesNet empleando 5-fold CV.");
		System.out.println("ARGUMENTOS:");
		System.out.println("\t1. Path (absoluto o relativo) del fichero de entrenamiento: datos en formato .arff");
		System.out.println("\t2. Path (absoluto o relativo) del fichero de test: datos en formato .arff");
		System.out.println("\t3. Path (absoluto o relativo) de un fichero en blanco: datos en formato .txt");
		System.out.println("\t4. Path (absoluto o relativo) de un fichero en blanco: datos en formato .txt\n");
		System.out.println("EJEMPLO DE USO:");
		System.out.println("java -jar KNN.jar ~/ruta/al/train.arff ~/ruta/al/test.arff ~/ruta/al/testPredictionsOneR.txt "
				+ "~/ruta/al/testPredictionsBN.txt"); 
	}	
}